package com.wande.dataplatform.service;

import com.wande.common.mybatis.core.page.PageQuery;
import com.wande.common.mybatis.core.page.TableDataInfo;
import com.wande.dataplatform.domain.bo.JobBo;
import com.wande.dataplatform.domain.vo.JobInstanceVO;
import com.wande.dataplatform.domain.vo.JobVO;

import java.util.List;

/**
 * 作业管理Service接口
 *
 * @author wande
 */
public interface IJobService {

    /**
     * 查询作业列表
     */
    TableDataInfo<JobVO> queryPageList(JobBo bo, PageQuery pageQuery);

    /**
     * 查询作业列表
     */
    List<JobVO> queryList(JobBo bo);

    /**
     * 查询作业详情
     */
    JobVO queryById(Long id);

    /**
     * 创建作业
     */
    Long createJob(JobBo bo);

    /**
     * 更新作业
     */
    Boolean updateJob(JobBo bo);

    /**
     * 删除作业
     */
    Boolean deleteJob(Long id);

    /**
     * 启动作业
     */
    Long startJob(Long id, String triggerType);

    /**
     * 停止作业实例
     */
    Boolean stopJobInstance(Long instanceId);

    /**
     * 重跑作业实例
     */
    Long rerunJobInstance(Long instanceId);

    /**
     * 查询作业实例列表
     */
    TableDataInfo<JobInstanceVO> queryInstanceList(Long jobId, PageQuery pageQuery);

    /**
     * 查询作业实例详情
     */
    JobInstanceVO queryInstanceById(Long instanceId);

    /**
     * 同步DolphinScheduler实例状态
     */
    void syncInstanceStatus(Long instanceId);

    /**
     * 获取作业实例日志
     */
    String getInstanceLogs(Long instanceId);
}
